package top.whysu.study.thinkinjava.chapter8.polymorphism.example1;

public class Music {
    /**
     * 编译器在编译的时候，它是不知道tune方法究竟绑定的是Wind对象还是Stringed对象。
     * 解决方法是后期绑定，也叫动态绑定，运行时绑定。也就是说，编译器一直不知道对象的类型，但是方法调用机制能找到正确的方法体，并加以调用。
     */
    public static void tune(Instrument i) {
        i.play(Note.MIDDLE_C);
    }

    public static void main(String[] args) {
        Wind flute = new Wind();
        // 这里Wind向上转型
        tune(flute);
    }
}
